Спринт 2/18 → Тема 4/6: Настройка окружения: Git, pytest → Урок 2/7
Удалённый репозиторий на GitHub. SSH
Практически в каждом спринте курса вас будет ожидать финальное задание — вам нужно будет самостоятельно писать код. Мы заранее подготовили для вас репозитории проектов на GitHub, которые уже содержат тесты и иногда прекод. Такую заготовку вам нужно будет сохранить на своём устройстве, а после выполнения задания — вернуть решение обратно на GitHub для проверки ревьюером. Поэтому следующий ваш шаг — регистрация на сервисе GitHub и настройка терминала для работы с удалёнными репозиториями.
Регистрация на GitHub
Зарегистрируйтесь на GitHub, при регистрации укажите имя пользователя, адрес электронной почты и придумайте пароль. После того как вы нажмёте кнопку «Создать аккаунт», система попросит вас подтвердить электронную почту. Загляните в почтовый ящик, там будет письмо с кодом подтверждения.
После подтверждения почты GitHub предложит вам пройти небольшой опрос, его можно пропустить.
Если вы видите перед собой вот такой экран, регистрация на GitHub завершена:
Аутентификация на GitHub
Работать с GitHub вы будете через терминал. Первым делом сервис должен определить, есть ли у вашего аккаунта права на подключение к GitHub, и если есть — то с каким уровнем доступа. Такой процесс называется аутентификация.
Аутентифицироваться можно через сетевые протоколы HTTPS или SSH. По этим протоколам передаются данные и происходит безопасное соединение между клиентом и сервером. Каждый из протоколов достигает безопасности за счёт шифрования данных, а вот сами способы шифрования различаются:
- при подключении через HTTPS необходимо указать свой логин и токен; токен можно получить в личном кабинете на GitHub, используя инструкцию;
- при подключении по SSH нужно сгенерировать специальные ключи и записать их в настройках аккаунта на GitHub.
Мы выбрали второй вариант аутентификации — по SSH; в дальнейших уроках курса будем опираться именно на него.
Настройка SSH для GitHub
SSH (англ. Secure SHell — безопасная оболочка) — это сетевой протокол для зашифрованного соединения между клиентом и сервером; по этому протоколу можно безопасно передавать данные.
При подключении по SSH применяют пары криптографических ключей: открытый (public, публичный) и закрытый (private, приватный). Пользователь создаёт ключи специальной командой в терминале и сохраняет закрытый ключ на своём компьютере. Открытый ключ сохраняется на сервере, например, в настройках аккаунта на GitHub.
При соединении с сервером проверяется соответствие этих ключей друг другу, и если проверка пройдена успешно — пользователю разрешается доступ на сервер.
При аутентификации по ключу закрытая часть (private key) всегда передаётся в зашифрованном виде. Закрытый ключ можно защитить паролем. При соединении клиент запросит этот пароль перед тем, как сравнить ключи.
Создание SSH-ключей
Запустите Git Bash (если у вас Windows) или Терминал (на Linux/MacOS). Выполните команду
ssh-keygen:Консоль попросит ввести путь к файлу, в который будут сохранены сгенерированные ключи, и одновременно предложит сохранить их в файл по умолчанию:
BASH
Сохраните ключи в папку по умолчанию: для этого нажмите Enter на Windows или Return на macOS. В уроках мы исходим из того, что ключи сохранены именно в дефолтной директории.
При создании ключей система попросит придумать пароль для доступа к ключам. Когда вы будете задавать пароль, в терминале ничего не отобразится, даже звёздочки:
BASH
Обязательно создайте пароль и запомните его — это дополнительная мера безопасности на тот случай, если ваш приватный ключ попадёт не в те руки.
Рисунок в окне терминала будет свидетельствовать, что ключи успешно созданы:
Теперь необходимо сохранить открытый ключ в вашем аккаунте на GitHub.
Выведите ключ в терминал командой:
BASH
Скопируйте ключ от символов
ssh-rsa , включительно, и до конца:Зайдите в свой аккаунт на GitHub, перейдите в раздел настроек:
Выберите пункт SSH and GPG keys; для создания нового ключа нажмите на кнопку New SSH key в правом верхнему углу:
Откроется страница с двумя полями ввода:
- Title (заголовок ключа). Когда будете задавать заголовок, учитывайте, что в дальнейшем вы, возможно, добавите и другие ключи. Например, с другого своего компьютера, чтобы получить с него доступ к репозиториям на GitHub. Поэтому выбирайте для каждого ключа уникальные заголовки, например ключ с домашнего компьютера можно назвать HomePC, а с рабочего — WorkPC.
- Key (ключ). Сюда необходимо вставить скопированный из терминала ключ.
Нажмите кнопку Add SSH key — ключ добавится к вашему аккаунту. Если вы захотите получить SSH-доступ к своему аккаунту на GitHub с нескольких компьютеров, для каждого из них должен быть создан и добавлен свой SSH-ключ.
Работа с GitHub
Место, где хранится и обновляется код проекта, чаще всего в виде файлов, называют репозито́рием. Как говорилось ранее, репозиторий может быть как локальным, на вашем компьютере, так и удалённым, на сервере GitHub или на других подобных сервисах.
Основной репозиторий — удалённый, в вашем случае тот, что находится на GitHub. Дополнительный репозиторий — локальный. Он нужен для того, чтобы вносить изменения в код и доставлять эти изменения в основной репозиторий.
Мы создали для вас тестовый репозиторий, который называется backend_test_homework. Ваша задача — скопировать его в свой аккаунт.
Операция копирования чужого репозитория в свой аккаунт называется «форк» (англ. fork — «вилка»), этот процесс происходит на сервере GitHub.
После форка вы получаете полную независимую копию чужого репозитория в свой аккаунт и можете работать с ним, как со своим.
Зайдите в тестовый репозиторий и нажмите Fork:
Когда репозиторий скопируется, он будет доступен по адресу
https://github.com/ваш-аккаунт-на-гитхабе/backend_test_homework.В вашем аккаунте появился тестовый репозиторий. Поработаем с ним, иначе зачем он там лежит.